package com.springCloud.fegin;

/**
 * Feign的使用
 * 为什么使用它
 */
public class FeignDemo {

    /**
     * Feign的使用
     * 客户端加入@EnableFeignClients注解
     * 接口上标明要调用的服务
     * 接口中写上要调用的方法，在方法上标明要调用的地址
     */
    public void demo1(){

    }

    /**
     * 为什么使用它
     * 它和Ribbon的区别
     *
     * 在使用Ribbon和RestTemplate的时候，通常要写上需要调用的服务地址
     * 然而在开发过程中，这类请求很多，所以Feign对此进行了进一步的封装，让调用更加简洁方便
     */
    public void demo2(){

    }

    /**
     * @EnableFeignClients
     *
     * 注解导入了FeignClientRegistrar类
     * registerBeanDefinitions
     * 扫描所在类包中的@Feign注解，创建Feign客户端
     */
    public void demo3(){

    }

    /**
     * FeignClientFactoryBean.class
     *
     * getObject()
     */

    /**
     * 生成SynchronousMethodHandler
     * InvocationHandler  从Map根据metoed调用methodHandler
     */

    /**
     * methodHandler.invoke
     *
     * 根据参数生成RequestTemplate,用于底层发起Http请求
     */
}
